package com.example.demo.common;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.nio.charset.StandardCharsets;
import java.util.UUID;

//密码加盐
public class PasswordSalt {
    //加密
    public static String encrypt(String password) {
        //此方法每次生成长度固定的32位的盐值,去掉特征"-"
        String salt= UUID.randomUUID().toString().replace("-","");
        String finalPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());//注意先后顺序,后面解密也必须是这个顺序
        return salt+finalPassword;
    }

    //解密
    public static boolean decrypt(String password ,String finalPassword) {
        if(!StringUtils.hasLength(password)||!StringUtils.hasLength(finalPassword)) {
            return false;
        }
        if(finalPassword.length()!=64) {
            return false;
        }
        String salt=finalPassword.substring(0,32);
        //使用盐值和password生成待确认密码,加上salt和finalpassword进行比较
        String encryptPassword=DigestUtils.md5DigestAsHex((salt+password).getBytes());
        return (salt+encryptPassword).equals(finalPassword);
    }

}
